package pe.com.pev.gestiondocente.dao.impl;

import java.util.List;
import org.apache.log4j.Logger;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import pe.com.pev.core.dao.GenericDAOImpl;
import pe.com.pev.core.exceptions.BOException;
import pe.com.pev.core.exceptions.DAOException;
import pe.com.pev.gestiondocente.dao.ProfesorDAO;
import pe.com.pev.gestiondocente.domain.Profesor;
import pe.com.pev.seguridad.domain.Usuario;

@Service("profesorDAO")
public class ProfesorDAOImpl extends GenericDAOImpl<Profesor> implements ProfesorDAO {

	private Logger logger = Logger.getLogger(this.getClass());

	/*private static String LISTAR_PROFESOR_POR_USUARIO = "SELECT A.* FROM (SELECT PR.* FROM EWTEST.TEWTEST_USUARIO US "
			+ "LEFT JOIN EWTEST.TEWTEST_USUARIO_PERFIL UP "
			+ "ON US.ID_USUARIO = UP.ID_USUARIO "
			+ "LEFT JOIN EWTEST.TEWTEST_PERFIL_MODULO PM "
			+ "ON PM.ID_PERFIL = UP.ID_PERFIL "
			+ "LEFT JOIN EWTEST.TEWTEST_PROFESOR PR "
			+ "ON MO.ID_MODULO = PM.ID_MODULO "
			+ "WHERE US.CODIGO_USUARIO = '%s' AND"
			+ " PM.ID_MODULO IS NOT NULL ) A "
			+ " START WITH A.SUPERIOR_ID IS NULL "
			+ " CONNECT BY PRIOR A.ID_MODULO = A.SUPERIOR_ID";*/

	@Autowired
	public ProfesorDAOImpl(SessionFactory sessionFactory) {
		super(sessionFactory);
	}

	public List<Profesor> findProfesor(Profesor profesor) throws Exception,
			DAOException {
		String where = "";

		if (profesor.getNombres() == null) {
			profesor.setNombres("");
		}
		where = where + " upper(nombres) like upper('%"
				+ profesor.getNombres() + "%')";
		if (profesor.getApellidoPaterno() != null && !profesor.getApellidoPaterno().trim().equals("")) {
			where = where + " and upper(apellidoPaterno) like upper('%"
					+ profesor.getApellidoPaterno() + "%')";
		}
		if (profesor.getApellidoMaterno() != null
				&& profesor.getApellidoMaterno().trim().equals("")) {
			where = where + " and upper(apellidoMaterno) like upper('%"
					+ profesor.getApellidoMaterno() + "%')";
		}
		if(profesor.getEstado()!= null &&
				   !profesor.getEstado().equals("")){
					where = where +" and upper(estado) like upper('%" +
					profesor.getEstado()+
							"%') ";
		}
		String orders = " order by fechaCreacion desc,nombres, apellidoPaterno, apellidoMaterno";
		if (where.length() > 0) {
			where = " where " + where;
		}
		List<Profesor> listaProfesor = super.executeQuery(Profesor.class, where,
				orders);
		return listaProfesor;
	}

	@Override
	public List<Profesor> findProfesorByUsuario(Usuario usuario)
			throws BOException, DAOException {
		// TODO Auto-generated method stub
		return null;
	}

/*	public List<Profesor> findProfesorByUsuario(Profesor profesor)
			throws BOException, DAOException {
		Usuario usuario;
		String query = String.format(LISTAR_MODULOS_POR_USUARIO, usuario
				.getCodigo());
		System.out.println("CONSULTANDO MODULOS");
		List<Profesor> listaProfesor= super.executeSQL(query, Profesor.class);
		System.out.println("CANTIDAD DE MODULOS="+listaProfesor.size());
		return listaProfesor;
	}*/

}
